히트맵 구현하기(자체 구현하기 vs 외부솔루션) | 퀘스트에 참여하세요

히트맵 구현하기(자체 구현하기 vs 외부솔루션)
인사이트/로그개발 관련

히트맵 구현하기(자체 구현하기 vs 외부솔루션)

#히트맵 #npm #직접구현 #개발 #유료vs무료 #솔루션 #hotjar #crazyegg #mouseflow #fullstory

작성일 : 25.01.24 09:22

0

0

0

👉 본문을 50%이상을 읽으면 '여기까지다' 퀘스트가 완료됩니다(로그인 필수)

오늘은 히트맵에 개발에 대해서 한번 알아봤습니다.

오늘 저희팀에서 히트맵 사용하냐고 해서, 아니라고했는데 , 내내 맘에 좀 걸리드라구요.

물론 다양한 이벤트를 쌓고 있기는 한데, 있으면 있을수록 좋기는 하니까요?

이 버전에서는 직접 구현하는 거랑, 아닌 방법 둘다 소개해보도록 하겠습니다.

직접 구현

외부 솔루션에 의존하지 않고, 쌓는 방법은 역시나 한땀한땀 하는 방법밖에 없습니다.

히트맵의 본질은 유저의 마우스와 클릭에 대한 데이터를 쌓고 분석하는 것이기 때문입니다.

그런데 딱 봐도 데이터 엄청 많을 것 같지 않나요? 한 사용자가 마우스를 얼마나 내릴까요?

한페이지에서도 한 30번 이상의 이벤트가 나올것 같은데… 쉽지 않죠 , 어렵다보다는 하기 싫다는게 더 맞겠네요.

1. 마우스 이벤트 추적(클라이언트)

  • - 클릭시 이벤트 수집 (클릭)

    • - 마우스 이동시 이벤트 수집 (이동)

      • - 스크롤 이벤트 수집 (클릭)

  import { useEffect } from 'react';

const HeatmapTracker = () => {
  useEffect(() => {
    const handleClick = (e) => {
      const data = {
        type: 'click', x: e.clientX,y: e.clientY,timestamp: Date.now(),
      };
      sendToServer(data);
    };

    const handleMouseMove = (e) => {
      const data = {
        type: 'mousemove',x: e.clientX,y: e.clientY,timestamp: Date.now(),
      };
      sendToServer(data);
    };

    const handleScroll = () => {
      const data = {
        type: 'scroll', scrollY: window.scrollY,timestamp: Date.now(),
      };
      sendToServer(data);
    };

    // 이벤트 리스너 등록
    document.addEventListener('click', handleClick);
    document.addEventListener('mousemove', handleMouseMove);
    window.addEventListener('scroll', handleScroll);

    return () => {
      document.removeEventListener('click', handleClick);
      document.removeEventListener('mousemove', handleMouseMove);
      window.removeEventListener('scroll', handleScroll);
    };
  }, []);

2. 서버 측에서 데이터 저장

서버에서는 클라이언트로부터 받은 히트맵 데이터를 처리하고 저장해야 합니다. 일반적으로 이를 데이터베이스에 저장하고, 나중에 이를 바탕으로 히트맵을 시각화합니다.

클라이언트에서 받은 히트맵 데이터를 데이터베이스에 저장하는 부분은 실제로 선택한 데이터베이스(MySQL, MongoDB 등)에 맞춰서 작성해야 합니다.

const mongoose = require('mongoose'); 
const heatmapSchema = new mongoose.Schema({ type: String, x: Number, y: Number, scrollY: Number, timestamp: Date, }); 
const Heatmap = mongoose.model('Heatmap', heatmapSchema); 
const saveHeatmapData = (data) => { 
const heatmap = new Heatmap(data); 
 heatmap.save() .then(() => console.log('Data saved')) .catch((err) => console.error('Error saving data:', err)); 
};

3. 히트맵 시각화

히트맵을 클라이언트에서 시각화하려면, 수집된 데이터를 기반으로 각 위치에 색상을 입히는 작업이 필요합니다.

react-heatmap-grid와 같은 패키지를 활용하면 보다 쉽게 시각화할 수 있습니다.

import React from 'react'; 
import HeatMap from 'react-heatmap-grid'; 

const MyHeatmap = ({ data }) => { 
// 데이터를 기반으로 히트맵의 좌표와 값을 설정 
const values = data.map(d => [d.x, d.y, 1]); 
// 예시: x, y 좌표, 클릭 횟수 등 
return ( <HeatMap xLabels={['Label1', 'Label2', 'Label3']} 
// x축 레이블 yLabels={['LabelA', 'LabelB', 'LabelC']} 
// y축 레이블 data={values} /> ); }; 

export default MyHeatmap;

4. 기타

  • 성능 최적화: 너무 많은 데이터를 한 번에 보내지 않도록 배치 전송을 고려하세요.

  • 예를 들어, 일정 시간 간격으로 데이터를 서버에 보내거나, 이벤트의 양을 제한할 수 있습니다.

돈주고 쓰기

1. Hotjar

https://www.hotjar.com

Hotjar는 방문자의 행동을 추적하고 분석할 수 있는 강력한 도구입니다.

히트맵, 방문자 기록, 폼 분석, 설문조사 등의 기능을 제공합니다. 쉽게 설치하고 사용할 수 있으며, 방문자가 페이지를 어떻게 스크롤하고 클릭하는지 시각적으로 확인할 수 있습니다.

  • 주요 기능:

    • 클릭, 스크롤, 마우스 이동에 대한 히트맵 제공

    • 방문자 세션 기록(세션 리플레이)

    • 폼 분석과 설문조사 기능

    • 분석 대시보드 제공

  • 장점: 간단한 설치, 직관적인 인터페이스, 다양한 분석 도구.

  • 단점: 무료 플랜에서 제공되는 기능에 제한이 있을 수 있음.

2. Clarify

https://clarity.microsoft.com/

돈 많은 마이크로소프트에서 무료로 제공하는 도구입니다.

주요기능은 Hotjar와 동일합니다. 다만 무료라는 것이 정말 큰 혜택으로 보입니다.

무료이다보니 요즘 무섭게 뜨고 있습니다. 1위가 hotjar라면 2위가 Clarify입니다.

웹뿐만 아니라 앱까지 된다고 하니, 하나의 도입으로 멀티플랫폼 분석이 가능합니다.

3. Crazy Egg

https://www.crazyegg.com/

Crazy Egg는 히트맵, 스크롤맵, 클릭맵 등의 기능을 제공하는 또 다른 인기 있는 솔루션입니다.

사용자는 웹사이트의 다양한 페이지에 대해 방문자 행동 데이터를 수집하고 시각화할 수 있습니다.

  • 주요 기능:

    • 클릭맵, 스크롤맵, 영역별 히트맵 제공

    • 방문자 세션 리플레이

    • 다양한 페이지와 요소에 대한 실시간 분석

  • 장점: 매우 직관적이고 다양한 시각화 도구 제공.

  • 단점: 유료 서비스, 일부 기능이 유료 플랜에서만 제공됨.

4. Mouseflow

https://mouseflow.com/

Mouseflow는 사용자 행동을 추적하고, 클릭, 스크롤, 마우스 이동을 기록하는 기능을 제공합니다.

또한, 방문자 세션을 기록하여 상세하게 분석할 수 있습니다. 이 서비스는 실시간 데이터를 제공하며, 다양한 페이지를 테스트할 수 있는 기능을 제공합니다.

  • 주요 기능:

    • 클릭, 스크롤, 마우스 이동 히트맵 제공

    • 방문자 세션 기록

    • 다양한 이벤트 및 상호작용 분석

  • 장점: 세션 리플레이 및 고급 분석 기능 제공.

  • 단점: 일부 고급 기능은 유료 플랜에서만 제공됨.

5. FullStory

https://www.fullstory.com/

FullStory는 사용자 경험을 분석하는 데 유용한 플랫폼으로, 세션 리플레이와 히트맵 기능을 제공합니다.

이 솔루션은 웹사이트의 방문자 행동을 분석하고, 이들이 사이트에서 상호작용하는 방식을 시각적으로 표현합니다.

  • 주요 기능:

    • 세션 리플레이, 클릭맵, 스크롤맵 제공

    • 사용자의 페이지 이동 경로 추적

  • 장점: 세션 리플레이 기능이 뛰어나고, 유연한 분석 옵션 제공.

  • 단점: 높은 비용이 발생할 수 있음.

6. Lucky Orange

https://www.luckyorange.com/

Lucky Orange는 사용자 행동을 추적하고, 클릭, 스크롤, 마우스 이동 등의 히트맵을 제공하는 솔루션입니다.

세션 리플레이와 대시보드도 제공하며, 실시간 데이터를 기반으로 빠르게 최적화할 수 있습니다.

  • 주요 기능:

    • 클릭, 스크롤, 마우스 이동 히트맵 제공

    • 세션 리플레이, 폼 분석

    • 실시간 방문자 추적

  • 장점: 다양한 기능과 실시간 데이터 제공.

  • 단점: 무료 플랜에서 제공되는 기능에 제한이 있을 수 있음.